#include <iostream>
using namespace std;

/*
    析构函数的定义和使用
    1.定义
        ~类名()
        {

        }
     特点：没有返回值类型，没有形参，只会有这一个写法
          对象地址空间释放，析构就会自动调用
    2.实际应用：往往用来做收尾工作

*/

class Cat
{
public:
    Cat()
    {
        cout << "调用无参构造" << endl;
    }
    Cat(string name, int age, float weight)
    {
        this->name = name;
        this->age = age;
        this->weight = weight;
        cout << "调用有参构造" << endl;
    }

    ~Cat()
    {
        cout << "调用析构函数" << endl;
    }

private:
    string name;
    int age;
    float weight;
};

int main()
{
    // 创建猫对象 栈空间 主函数调用结束c1地址空间就会自动释放
    // Cat c1("小花", 2, 3.3);

    // 创建猫对象 堆空间 需要手动释放
    Cat *c2 = new Cat("小黑", 3, 4.4);

    // delete c2;
}